#ifndef	TRANSCODING_H
#define	TRANSCODING_H

typedef   signed          char int8_e;
typedef   signed short     int int16_e;
typedef   signed           int int32_e;

typedef unsigned          char uint8_e;
typedef unsigned short     int uint16_e;
typedef unsigned           int uint32_e;

#define		Little_Endian

/****************************************************************************************************
 函数原型：void Str_GB_TO_Unicode(uint8_e *gb,uint16_e gb_byte_size, uint8_e *ucs2, uint16_e *ucs2_byte_size)
 入口参数：gb 	- 源数据指针 ，		 gb_byte_size 	- 源数据字节个数 ，
		   ucs2 - 目标结果数据指针 ，ucs2_byte_size - 目标结果字节个数存储指针
 出口参数：无
 函数功能：国标码、ASCII码转换到UCS-2程序
 ****************************************************************************************************/
extern void Str_GB_TO_Unicode(uint8_e *gb,uint16_e gb_byte_size, uint8_e *ucs2, uint16_e *ucs2_byte_size);

/****************************************************************************************************
 函数原型：int Str_Unicode_TO_GB(uint8_e *ucs2, uint16_e ucs2_byte_size, uint8_e *gb,uint16_e *gb_byte_size)
 入口参数：ucs2 - 源数据指针 ，		 ucs2_byte_size	- 源数据字节个数 ，
		   gb	- 目标结果数据指针 ，gb_byte_size   - 目标结果字节个数存储指针
 出口参数：汉字个数
 函数功能：转换Unicde字符串到GB码，返回汉字数
 ****************************************************************************************************/
extern int Str_Unicode_TO_GB(uint8_e *ucs2, uint16_e ucs2_byte_size, uint8_e *gb,uint16_e *gb_byte_size);

/****************************************************************************************************
 函数原型：int Str_GB_TO_UTF8(uint8_e *gb,uint16_e gb_byte_size, uint8_e *utf8, uint16_e *utf8_byte_size)
 入口参数：gb 	- 源数据指针 ，		 gb_byte_size 	- 源数据字节个数 ，
		   utf8 - 目标结果数据指针 ，utf8_byte_size - 目标结果字节个数存储指针
 出口参数：返回字符个数
 函数功能：国标码、ASCII码转换到utf8程序
 注    意：utf8内存空间（字节计算）>= GB内存空间（字节计算） x 3 + 1字节 ，防止内存溢出
 ****************************************************************************************************/
extern int Str_GB_TO_UTF8(uint8_e *gb,uint16_e gb_byte_size, uint8_e *utf8, uint16_e *utf8_byte_size);

/****************************************************************************************************
 函数原型：int Str_UTF8_TO_GB(uint8_e *utf8, uint8_e *gb, uint16_e *gb_byte_size)
 入口参数：UTF-8 - 源数据指针 
		   gb	 - 目标结果数据指针 ，gb_byte_size   - 目标结果字节个数存储指针
 出口参数：汉字个数
 函数功能：转换UTF-8字符串到GB码，返回汉字数
 ****************************************************************************************************/
extern int Str_UTF8_TO_GB(uint8_e *utf8, uint8_e *gb, uint16_e *gb_byte_size);

/****************************************************************************************************
 函数原型：void utf8_to_unicode(uint8_e *utf8, uint8_e *unicode, uint16_e *unicode_size)
 入口参数：utf-8 格式编码的存储首地址 ， unicode 转换结果存储区首地址 ，unicode_size 转化结果的字节个数
 出口参数：无
 函数功能：utf-8 编码字符转化为 unicode编码字符， 
 注    意：unicode内存空间（字节计算）>= utf8内存空间（字节计算）x 2字节 ，防止内存溢出
 ****************************************************************************************************/
extern void utf8_to_unicode(uint8_e *utf8, uint16_e utf8_byte_size, uint8_e *unicode, uint16_e *unicode_size);

/****************************************************************************************************
 函数原型：void utf8_to_unicode_little(uint8_e *utf8, uint8_e *unicode, uint16_e *unicode_size)
 入口参数：utf-8 格式编码的存储首地址 ， unicode 转换结果存储区首地址 ，unicode_size 转化结果的字节个数
 出口参数：无
 函数功能：utf-8 编码字符转化为 unicode(小端)编码字符， 
 注    意：unicode内存空间（字节计算）>= utf8内存空间（字节计算）x 2字节 ，防止内存溢出
 ****************************************************************************************************/
extern void utf8_to_unicode_little(uint8_e *utf8, uint16_e utf8_byte_size, uint8_e *unicode, uint16_e *unicode_size);

 /****************************************************************************************************
 函数原型：void unicode_to_utf8(uint8_e *unicode, uint16_e unicode_size, uint8_e *utf8, uint16_e *utf8_byte_size)  
 入口参数：unicode 格式编码的存储首地址 ，unicode_size 字节个数， utf-8 转换结果存储区首地址 ， utf8_byte_size转化结果的字节个数
 出口参数：无
 函数功能：unicode 编码字符转化为 utf-8编码字符， 
 注    意：utf8内存空间（字节计算）>= unicode内存空间（字节计算）x 3字节 ，防止内存溢出
 ****************************************************************************************************/
extern void unicode_to_utf8(uint8_e *unicode, uint16_e unicode_size, uint8_e *utf8, uint16_e *utf8_byte_size); 

#endif

